perm filename NORMAL.SAI[11,ALS] blob
sn#060626 filedate 1973-09-03 generic text, type T, neo UTF8
00010 BEGIN "NORMAL"
00020 DEFINE ⊂="COMMENT"; ⊂ 9/1/73 NORMALLIXES INPUT DATA;
00030 DEFINE CR="'15",LF="'12",CRLF="CR&LF",TB="'11";
00040
00050 INTEGER ARRAY INDATA[0:511];
00060 INTEGER ARRAY LFILE[0:'177];
00070 INTEGER ARRAY SUMS[0:23,0:63];
00080 INTEGER I,J,K,L,M,N,P,SEGC,SEGTOT,BRK,EOF,EOFA,BPT,RL;
00090 INTEGER CHAN1,CHAN2, CHAN3,CHAN4,CHAN5,CHAN6;
00100 STRING READ1,FILEI,FILEL,FILLST;
00110 BOOLEAN ER;
00120
00130 STDBRK(1);
00140 SETBREAK(14,"∃",NULL,"INS");
00150
00160 OUTSTR("This program computes a table that can be used to normallie "&crlf
00170 &"the input data for maximum possible resolution in 16 buckets."&crlf);
00180 CHAN1←1; CHAN2←2; CHAN3←3; CHAN4←4; CHAN5←5; CHAN6←6;
00190 OUTSTR("Data file list (LIST28) = "); FILEL←INCHWL;
00200 IF FILEL="" THEN FILEL←"LIST28";
00210 CLOSE(CHAN5); OPEN(CHAN5,"DSK",1,2,0,3500,BRK,EOFA);
00220 LOOKUP(CHAN5,FILEL,ER);
00230 WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&FILEL&" File = ");
00240 LOOKUP(CHAN5,FILEL←INCHWL,ER); END; EOFA←0;
00250 FILLST←INPUT(CHAN5,14); EOFA←0; RL←0;
00260 WHILE EOFA=0 DO BEGIN "LISTREAD"
00270 FILEI←SCAN(FILLST,1,J); IF FILEI="" THEN DONE;
00280
00290 CLOSE(CHAN4); OPEN(CHAN4,"DSK",'10,10,0,0,0,EOF);
00300 LOOKUP(CHAN4,FILEI,ER);
00310 IF EOF≠0 THEN DONE;
00320 ARRYIN(CHAN4,LFILE[0],'200); ⊂ Input header;
00330 SEGTOT←(LFILE[0]*6)%256; SEGC←0;
00340 OUTSTR(FILEI&" "&CVS(SEGTOT)&" seg. ");
00350
00360 WHILE TRUE DO BEGIN
00370 ARRYIN(CHAN4,INDATA[0],512);
00380 BPT←POINT(6,INDATA[0],-1);
00390 FOR I←0 STEP 1 UNTIL 127 DO BEGIN
00400 SEGC←SEGC+1; IF SEGC>SEGTOT THEN DONE;
00410 FOR P←0 STEP 1 UNTIL 23 DO BEGIN
00420 J←ILDB(BPT);
00430 SUMS[P,J]←SUMS[P,J]+64; END;
00440 END;
00450 IF SEGC>SEGTOT THEN DONE;
00460 END;
00470
00480 IF RL=0 THEN RL←1 ELSE BEGIN RL←0; OUTSTR(CRLF); END;
00490 IF EOFA≠0 THEN DONE;
00500 END "LISTREAD";
00510
00520 FOR P←0 STEP 1 UNTIL 23 DO BEGIN
00530 N←0;
00540 FOR J←0 STEP 1 UNTIL 63 DO BEGIN
00550 SUMS[P,J]←SUMS[P,J] LAND '777777777700;
00560 N←N+SUMS[P,J]; END;
00570 IF P=0 THEN OUTSTR(CRLF&"Samples analysed = "&CVS (N LSH -6)&CRLF);
00580 IF SUMS[P,0]>N LSH -4 THEN BEGIN
00590 N←(N-SUMS[P,0])%60; M←0; K←4; END ELSE BEGIN
00600 N←N LSH -6; M←SUMS[P,0]-N; K←1; END;
00610
00620 FOR J←1 STEP 1 UNTIL 63 DO BEGIN
00630 M←M+SUMS[P,J]; SUMS[P,J]←SUMS[P,J]+K;
00640 FOR I←0 STEP 1 UNTIL 3 DO BEGIN
00650 IF M<N THEN DONE; IF K<63 THEN K←K+1; M←M-N; END;
00660 END;
00670 END;
00680
00690 SETFORMAT(3,0);
00700
00710 FOR I←0 STEP 1 UNTIL 63 DO BEGIN
00720 FOR J←0 STEP 1 UNTIL 23 DO
00730 OUTSTR(CVS(SUMS[J,I] LAND '77));
00740 OUTSTR(CRLF); END;
00750
00760 OPEN(CHAN1,"DSK",'10,0,10,0,0,EOF);
00770 ENTER(CHAN1,"NORMAL.DAT",0);
00780 ARRYOUT(CHAN1,SUMS[0,0],1536);
00790 CLOSE(CHAN1);
00800 OUTSTR(CRLF&"File NORMAL.DAT has been written."&CRLF);
00810 RELEASE(CHAN1); RELEASE(CHAN2); RELEASE(CHAN3); RELEASE(CHAN6);
00820
00830 END "NORMAL";